英創(chuàng)EM928x/EM335x/ESM335x系列主板新CAN驅(qū)動使用說明
12月份,英創(chuàng)對現(xiàn)主要銷售的產(chǎn)品EM928X、EM335X、ESM335X系列工控主板的CAN驅(qū)動做了一次較大升級。主要目的是修復(fù)原有BUG,同時優(yōu)化部分邏輯,使得使用起來更加方便。
優(yōu)化內(nèi)容
1、修復(fù)了原驅(qū)動打開過濾器后一個可能導(dǎo)致接收丟包的BUG
EM335X及ESM335X系列主板在打開過濾器后,CAN接收單元過少,在高速收發(fā)時可能因為來不及收發(fā)導(dǎo)致丟包。新驅(qū)動修改了該部分邏輯,同時定義過濾器最大數(shù)為4個。新的過濾器設(shè)置說明請參考附錄《英創(chuàng)新CAN驅(qū)動接口調(diào)用方法及說明》過濾器設(shè)置一節(jié)。
2、增加一套新的接口函數(shù)
1)新的接口更加簡潔清晰,使用起來更加方便。詳細請參考附錄《英創(chuàng)新CAN驅(qū)動接口調(diào)用方法及說明》。
2)使用統(tǒng)一標準,英創(chuàng)公司計劃在之后推出的產(chǎn)品也采用該標準,方便客戶在升級更換平臺時移植起來更加方便。
3)完全兼容老驅(qū)動。新驅(qū)動保留了老驅(qū)動所有接口。升級之后,之前開發(fā)的CAN應(yīng)用程序可以繼續(xù)照常使用。
3、增加對CAN總線錯誤自動復(fù)位功能,修改了CAN總線錯誤處理邏輯結(jié)構(gòu)
原驅(qū)動在CAN總線出錯后會上報事件通知上層應(yīng)用程序,同時掛起等待上層應(yīng)用程序處理完錯誤事件后手動復(fù)位CAN總線。在等待期間,無法進行CAN的收發(fā)工作。
圖 原驅(qū)動總線錯誤處理流程
新驅(qū)動考慮到,實際應(yīng)用中用戶更希望在CAN錯誤排除后,能夠盡快恢復(fù)通信。大部分時候并不需要停下來等待CAN錯誤處理完畢。所以新驅(qū)動在CAN總線出錯后會自動檢查恢復(fù)CAN總線。
圖 新驅(qū)動總線錯誤處理流程
4、修改CAN總線錯誤處理模式
原驅(qū)動需要單獨獲取CAN錯誤事件,然后再通過接口查詢錯誤類型,再決定處理方式。新驅(qū)動做優(yōu)化修改了處理模式,使得使用起來更靈活方便。
圖 原驅(qū)動CAN總線錯誤處理模式
新驅(qū)動CAN總線錯誤信息改為通過幀形式上報,用戶可以通過注冊表[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\CAN1]中BusErrorReport項設(shè)置是否需要接收錯誤幀,默認不接收。
圖 新驅(qū)動CAN總線錯誤處理模式
錯誤幀詳細定義見附錄《CAN錯誤幀定義》。
5、修改發(fā)送邏輯
原驅(qū)動發(fā)送指令只是將需要發(fā)送的數(shù)據(jù)幀放入發(fā)送BUFFER區(qū),只要BUFFER區(qū)未滿均返回成功,但是不代表實際發(fā)送成功。
原CAN驅(qū)動會自動檢查發(fā)送BUFFER區(qū)里未發(fā)送的CAN包并嘗試發(fā)送,對未發(fā)送成功的CAN包會自動重發(fā),直到發(fā)送成功。
在CAN數(shù)據(jù)線斷開時,CAN發(fā)送指令會返回TRUE,但實際數(shù)據(jù)仍存在發(fā)送BUFFER中并未發(fā)送出去。當(dāng)CAN數(shù)據(jù)線重新連接后,BUFFER中的數(shù)據(jù)才得以發(fā)送。
圖 原驅(qū)動CAN發(fā)送流程
新驅(qū)動發(fā)送函數(shù)為阻塞函數(shù),超時時間默認為1000ms,可以設(shè)置注冊表[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\CAN1]中TxTimeout項修改該時間長短。返回值為實際發(fā)送是否成功的邏輯值。
當(dāng)CAN總線錯誤,發(fā)送失敗后,CAN驅(qū)動不會自動重發(fā)CAN包,所以需要應(yīng)用層自行判斷是否重發(fā)。
圖 新驅(qū)動CAN發(fā)送流程
6、增加CAN接收BUFFER到8K,可以緩存更多CAN包
附錄
《英創(chuàng)新CAN驅(qū)動接口調(diào)用方法及說明》
《CAN錯誤幀定義》
成都英創(chuàng)信息技術(shù)有限公司
http://www.emtronix.com
提交
Windows下STM32單片機eclipse編譯環(huán)境搭建
Android Studio應(yīng)用開發(fā)簡介
WinCE工控主板WiFi解決方案
敬請關(guān)注成都英創(chuàng)微信公眾號
WinCE工控主板通過PPI協(xié)議連接西門子PLC